import { request } from '@/utils/request'

// 用户管理API
export const userApi = {
  // 获取用户列表
  getUsers(params) {
    return request.get('/users', { params })
  },

  // 获取用户详情
  getUser(id) {
    return request.get(`/users/${id}`)
  },

  // 创建用户
  createUser(data) {
    return request.post('/users', data)
  },

  // 更新用户
  updateUser(id, data) {
    return request.put(`/users/${id}`, data)
  },

  // 删除用户
  deleteUser(id) {
    return request.delete(`/users/${id}`)
  },

  // 批量删除用户
  batchDeleteUsers(ids) {
    return request.delete('/users/batch', { data: { ids } })
  },

  // 更新用户状态
  updateUserStatus(id, status) {
    return request.put(`/users/${id}/status`, { status })
  },

  // 批量更新用户状态
  batchUpdateUserStatus(ids, status) {
    return request.put('/users/batch/status', { ids, status })
  },

  // 获取用户角色
  getUserRoles(id) {
    return request.get(`/users/${id}/roles`)
  },

  // 分配用户角色
  assignUserRoles(id, roleIds) {
    return request.put(`/users/${id}/roles`, { roleIds })
  },

  // 重置用户密码
  resetUserPassword(id) {
    return request.put(`/users/${id}/password/reset`)
  },

  // 修改用户密码
  changeUserPassword(id, data) {
    return request.put(`/users/${id}/password`, data)
  }
}

// 角色管理API
export const roleApi = {
  // 获取角色列表
  getRoles(params) {
    return request.get('/roles', { params })
  },

  // 获取角色详情
  getRole(id) {
    return request.get(`/roles/${id}`)
  },

  // 创建角色
  createRole(data) {
    return request.post('/roles', data)
  },

  // 更新角色
  updateRole(id, data) {
    return request.put(`/roles/${id}`, data)
  },

  // 删除角色
  deleteRole(id) {
    return request.delete(`/roles/${id}`)
  },

  // 批量删除角色
  batchDeleteRoles(ids) {
    return request.delete('/roles/batch', { data: { ids } })
  },

  // 更新角色状态
  updateRoleStatus(id, status) {
    return request.put(`/roles/${id}/status`, { status })
  },

  // 获取角色权限
  getRolePermissions(id) {
    return request.get(`/roles/${id}/permissions`)
  },

  // 分配角色权限
  assignRolePermissions(id, permissionIds) {
    return request.put(`/roles/${id}/permissions`, { permissionIds })
  }
}

// 权限管理API
export const permissionApi = {
  // 获取权限列表
  getPermissions(params) {
    return request.get('/permissions', { params })
  },

  // 获取权限树
  getPermissionTree() {
    return request.get('/permissions/tree')
  },

  // 获取权限详情
  getPermission(id) {
    return request.get(`/permissions/${id}`)
  },

  // 创建权限
  createPermission(data) {
    return request.post('/permissions', data)
  },

  // 更新权限
  updatePermission(id, data) {
    return request.put(`/permissions/${id}`, data)
  },

  // 删除权限
  deletePermission(id) {
    return request.delete(`/permissions/${id}`)
  },

  // 批量删除权限
  batchDeletePermissions(ids) {
    return request.delete('/permissions/batch', { data: { ids } })
  },

  // 更新权限状态
  updatePermissionStatus(id, status) {
    return request.put(`/permissions/${id}/status`, { status })
  },

  // 批量更新权限状态
  batchUpdatePermissionStatus(ids, status) {
    return request.put('/permissions/batch/status', { ids, status })
  },

  // 获取用户权限
  getUserPermissions() {
    return request.get('/permissions/user')
  },

  // 获取菜单权限
  getMenuPermissions() {
    return request.get('/permissions/menu')
  }
}

// 系统日志API
export const logApi = {
  // 获取日志列表
  getLogs(params) {
    return request.get('/logs', { params })
  },

  // 获取日志详情
  getLog(id) {
    return request.get(`/logs/${id}`)
  },

  // 导出日志
  exportLogs(params) {
    return request.get('/logs/export', { 
      params,
      responseType: 'blob'
    })
  },

  // 批量导出日志
  batchExportLogs(ids) {
    return request.post('/logs/batch-export', { ids }, { responseType: 'blob' })
  },

  // 清空日志
  clearLogs() {
    return request.delete('/logs/clear')
  },

  // 获取日志统计
  getLogStats(params) {
    return request.get('/logs/stats', { params })
  }
}

// 系统配置API
export const systemApi = {
  // 获取系统信息
  getSystemInfo() {
    return request.get('/system/info')
  },

  // 获取系统配置
  getSystemConfig() {
    return request.get('/system/config')
  },

  // 更新系统配置
  updateSystemConfig(data) {
    return request.put('/system/config', data)
  },

  // 获取系统状态
  getSystemStatus() {
    return request.get('/system/status')
  },

  // 清理缓存
  clearCache() {
    return request.post('/system/cache/clear')
  },

  // 备份数据库
  backupDatabase() {
    return request.post('/system/database/backup')
  },

  // 恢复数据库
  restoreDatabase(data) {
    return request.post('/system/database/restore', data)
  }
}

export default {
  userApi,
  roleApi,
  permissionApi,
  logApi,
  systemApi
} 